package com.ado.agea.revista;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class CrearRevista {

	private static final String FILE = "tipeo materiales 13-11 nov.xls";
	private static final int FIRST_ROW = 3;
	private Revista revista;
	private static int id_concepto;

	public static void main(String[] args) {
		CrearRevista revista = new CrearRevista();
		revista.cargarExcel();
		System.out.println(revista.revista.toString());

	}

	public CrearRevista() {
		revista = new Revista();
		id_concepto = 0;
	}

	private void cargarExcel() {
		try {
			HSSFCell cellNombre, cellMin, cellMax;
			POIFSFileSystem fs = new POIFSFileSystem(new FileInputStream(FILE));
			HSSFWorkbook wb = new HSSFWorkbook(fs);
			HSSFSheet sheet = wb.getSheetAt(0);

			for (int rownum = 3; rownum < sheet.getLastRowNum(); rownum++) {
				HSSFRow row = sheet.getRow(rownum);
				cellNombre = row.getCell(0);
				cellMin = row.getCell(1);
				cellMax = row.getCell(2);
				cargarCelda(cellNombre, cellMin, cellMax);
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	private void cargarCelda(HSSFCell cellNombre, HSSFCell cellMin, HSSFCell cellMax) {
		if (cellNombre.getCellType() == Cell.CELL_TYPE_STRING) {
			String nombre = cellNombre.getStringCellValue();
			if (cellMin.getCellType() != Cell.CELL_TYPE_BLANK && cellMax.getCellType() != Cell.CELL_TYPE_BLANK) {
				double minimo = getCellNumberValue(cellMin);
				double maximo = getCellNumberValue(cellMax);
				revista.agregarConcepto(new Concepto(id_concepto, revista.getIdFamilia(), nombre, minimo, maximo, 1));

			} else {
				if (nombre.equals(nombre.toUpperCase())) {
					revista.agregarFamilia(new Familia(3, nombre, 0));
				} else {
					revista.agregarSubFamilia(new Familia(3, nombre, 1));
				}
			}
		}
	}

	private double getCellNumberValue(HSSFCell valor) {
		if (valor.getCellType() == Cell.CELL_TYPE_NUMERIC)
			return valor.getNumericCellValue();
		else if (valor.getCellType()==Cell.CELL_TYPE_STRING)
			return Double.parseDouble(valor.getStringCellValue());
		return 0.0;

	}
}
